package jogo;

import java.util.LinkedList;
import java.util.Random;

public class FornecedorDaSenha implements Jogador
{
	private Jogada jogada;
	private Senha senha;
	
	public FornecedorDaSenha()
	{
		
		jogada = null;
		senha = new Senha();
	}
	
	@Override
	public void setJogada(Jogada jog) 
	{
		jogada = jog;
		
	}
	public Jogada getJogada()
	{
		return jogada;
	}
	
	public void criarSenha()
	{
		while(senha.ehSenhaValida() == false)
		{
			//primeiro temos uma lista de cores
			LinkedList<String> cores = new LinkedList<String>();
			cores.add("vermelho");
			cores.add("azul");
			cores.add("rosa");
			cores.add("amarelo");
			cores.add("roxo");
			cores.add("verde");
			cores.add("cinza");
			cores.add("laranja");
			
			//agora vamos retirar quatro cores randomicas dessa lista
			
			
			for(int i = 0; i < 4; i++)
			{
				Random geradorNumRandomico = new Random();
				String corDaSenha = cores.remove(geradorNumRandomico.nextInt(cores.size()));
				try
				{
					senha.adicionarPino(corDaSenha);
				}
				catch(Exception exc)
				{
					System.out.println("erro ao setar pinos para senha");
				}
			}
		}
	
	}
	
	public Senha getSenha()
	{
		return senha;
	}
	public void setSenha(Senha s)
	{
		senha = s;
	}
	
	public void jogar(InterfaceJogo interfaceJogo)
	{
		Retorno respostaFornecedor = new Retorno();
		Tentativa tentativaAdivinho = null;
		tentativaAdivinho = jogada.getTentativa();
		for(int j = 0 ;j < 4; j++)
		{
			try
			{
				String pinoTentativa = tentativaAdivinho.getPino(j);
				for(int k = 0; k < 4; k++)
				{
					String pinoSenha = senha.getPino(k);
					if(pinoSenha.compareTo(pinoTentativa) == 0 && k != j)
					{
						respostaFornecedor.adicionarPino("branco");
					}
					else if(pinoSenha.compareTo(pinoTentativa) == 0 && k == j)
					{
						respostaFornecedor.adicionarPino("preto");
					}
				}
				
			}
			catch(Exception exc)
			{
				System.out.println("erro ao setar pinos brancos ou pretos no retorno");
			}
			
		}
		
		jogada.setRetorno(respostaFornecedor);
	}
}
